﻿using KwaiXiaoDian.Entity.DO;
using KwaiXiaoDian.Entity.VO.Product;
using SSharing.Frameworks.NetCore.Common.Results;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KwaiXiaoDian.IService
{
    /// <summary>
    /// 商品service
    /// </summary>
    public interface IProductService : IBaseService<TProduct>
    {
        /// <summary>
        /// 同步商品信息
        /// </summary>
        /// <returns></returns>
        bool Sync();

        /// <summary>
        /// 获取商品列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        IPagingResult<Product> GetPagingProducts(GetPagingProductsRequest request);

        /// <summary>
        /// 同步商品详情
        /// </summary>
        /// <returns></returns>
        bool SyncProductDetail();

        /// <summary>
        /// 同步商品达人排行榜
        /// </summary>
        /// <returns></returns>
        bool SyncProductRank();

        /// <summary>
        /// 获取商品名称
        /// </summary>
        /// <param name="productId"></param>
        /// <returns></returns>
        string GetProductName(string productId);

        /// <summary>
        /// 设置商品类别
        /// </summary>
        /// <returns></returns>
        bool SetProductChannel();

        /// <summary>
        /// 初始化商品类别
        /// </summary>
        /// <returns></returns>
        Tuple<bool, string> InitProductChannel();

        /// <summary>
        /// 查询导出的字段列表
        /// </summary>
        /// <returns></returns>
        IList<ExportField> GetExportFields();

        /// <summary>
        /// 导出
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        byte[] Export(ExportRequest request);

        /// <summary>
        /// 同步商品推广数据
        /// </summary>
        /// <returns></returns>
        bool SyncProductPromote();

        /// <summary>
        /// 获取商品SKU列表
        /// </summary>
        /// <param name="productId"></param>
        /// <returns></returns>
        GetSKUListResponse GetSKUList(string productId);

        /// <summary>
        /// 更新处理意见
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Tuple<bool, string> UpdateHandleRemark(UpdateHandleRemarkRequest request, long userId);



    }
}
